package com.yidu.action;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;
import com.yidu.common.JsonMsg;
import com.yidu.common.Message;
import com.yidu.common.Pages;
import com.yidu.common.Tools;
import com.yidu.domain.ListenBackstageUser;
import com.yidu.domain.ListenCompany;
import com.yidu.domain.ListenPurchase;
import com.yidu.service.ListenCompanyService;

import net.sf.jsqlparser.parser.ParseException;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author dyl
 * @since 2018-11-27
 */
@Controller
@RequestMapping("/listenCompany")
public class ListenCompanyController {
	@Resource
	ListenCompanyService service;
	/**
	 * 查询分页的方法
	 * @param toytype
	 * @return
	 * @throws java.text.ParseException 
	 * @throws ParseException
	 * @author dyl 
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(Integer page,@RequestParam(value="limit") Integer pageSize,@RequestParam(value="key[companyName]",required=false) String companyName) throws java.text.ParseException{
		//获取一个对象
		ListenCompany us = new ListenCompany();
		//调用该对象
		us.setCompanyName(companyName);
		//定义一个map
		HashMap<String , Object> map = new HashMap<>();
		//分页的方法
		PageInfo<ListenCompany> list = service.findAll(page,pageSize,us);
		//查询总行数
		map.put("code", 0);
		map.put("msg", "");
		map.put("count",list.getTotal());
		map.put("data", list.getList());
		//返回
		return map;
	}
	/**
	 * 删除的方法
	 * @param toytype
	 * @return
	 * @author dyl
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public Message delete(ListenCompany listenCompany) {
		//new一个mes对象
		Message message=new Message();
		//定义一个变量
		int rows = service.delete(listenCompany.getCompanyId());
		//判断大于零则成功否则则失败
		if(rows>0) {
			message.setMsg("删除成功");
		}else {
			message.setMsg("删除失败");
		}
		//返回对象
		return message;
	}
	/**
	 * 根据id查询的方法
	 * @param toytype
	 * @return
	 * @author dyl
	 */
	@RequestMapping("/findById")
	@ResponseBody
	public ListenCompany findById(ListenCompany listenCompany) {
		ListenCompany listenCompany2 = service.findById(listenCompany.getCompanyId());
		return listenCompany2;
	}
	
	/**
	 * 
	 *@title 公司查询所有的方法
	 * @param
	 * @return 
	 * @author zwm
	 * @dateTime 2018年11月29日
	 * @versions
	 */
	@RequestMapping("/queryAllzwm")
	@ResponseBody
	public List<ListenCompany> queryAllzwm(){
		
		return service.querAllzwm();
	}
	
	/**
	 * 增加的方法
	 * @param toytype
	 * @return
	 * @throws ParseException 
	 * @throws java.text.ParseException 
	 * @throws java.text.ParseException 
	 * @author dyl
	 */
	@RequestMapping("/add")
	@ResponseBody
	public Message add(ListenCompany company) throws ParseException, java.text.ParseException{
		//new一个me对象
		Message message=new Message();
		company.setOpenTime(new Date());
		//定义一个r对象
		int rows = service.add(company);
		//判断大于零则成功不然则失败
		if(rows>0) {
			message.setMsg("操作成功");
		}else {
			message.setMsg("操作失败");
		}
		//返回之前的对象
		return message;
	}
	
	
	/**
	 * 增加分公司加盟
	 * @param company 公司对象
	 * @param session 登录的用户信息
	 * @author 刘武
	 * @return 工具类
	 */
	@RequestMapping("/addLeague")
	@ResponseBody
	public Message addLeague(ListenCompany company,HttpSession session){
		//新建一个Message工具类
		Message message=new Message();
		//获取登录用户的信息
		ListenBackstageUser users=(ListenBackstageUser) session.getAttribute("user");
		//判断用户对象是否为空
		if(users!=null) {
			//判断用户名是否为空
			if(!Tools.isEmpty(users.getBuName())) {
				company.setOper(users.getBuName());
			}
		}
		//返回rows
		int rows = service.addLeague(company);
		//判断大于零则成功不然则失败
		if(rows>0) {
			message.setState(1);
			message.setMsg("提交成功");
		}else {
			message.setState(2);
			message.setMsg("提交失败");
		}
		//返回之前的对象
		return message;
	}
	/**
	 * 显示分公司加盟审核
	 * @param company 公司对象
	 * @author 刘武
	 * @return map 对象
	 */
	@RequestMapping("/findLeague")
	@ResponseBody
	public Map<String, Object>  findLeague(ListenCompany company){
		//定义一个map
		HashMap<String , Object> map = new HashMap<>();
		//判断前台转过来的开始时间是否为空
		if(!Tools.isEmpty(company.getPurDateStart())) {
			map.put("purDateStart", company.getPurDateStart()+" 00:00:00");
		}
		//判断前台转过来的结束时间是否为空
		if(!Tools.isEmpty(company.getPurDateEnd())) {
			map.put("purDateEnd", company.getPurDateEnd()+" 23:59:59");
		}
		//判断前台转过来的公司名字是否为空
		if(!Tools.isEmpty(company.getCompanyName())) {
			map.put("companyName", company.getCompanyName());
		}
		//判断前台转过来的分页page,limit是否为空
		if(company.getPage()!=null && company.getLimit()!=null) {
			//新建一个Pages类
			Pages page=new Pages();
			//当前页数
			page.setCurPage(company.getPage());
			//每页最大显示条数
			page.setMaxResult(company.getLimit());
			//开始的行数
			map.put("firstRows", page.getFirstRows());
			//每页最大显示条数
			map.put("maxResult", page.getMaxResult());
		}
		
		//显示分公司加盟审核页面
		List<ListenCompany> list = service.findLeague(map);
		//查询分公司加盟审核页面总行数
		int rows=service.findLeagueRows(map);
		
		map.put("code", 0);
		map.put("msg", "");
		map.put("count",rows);
		map.put("data",list);
		//返回map
		return map;
	}
	/**
	 * 修改公司状态
	 * @param company 公司对象
	 * @param session 登录用户的信息
	 * @author 刘武
	 * @return
	 */
	@RequestMapping("updateCompanyState")
	@ResponseBody
	public JsonMsg updateCompanyState(ListenCompany company,HttpSession session) {
		//获取登录的用户信息
		ListenBackstageUser users=(ListenBackstageUser) session.getAttribute("user");
		//判断用户对象是否为空
		if(users!=null) {
			//判断用户名是否为空
			if(!Tools.isEmpty(users.getBuName())) {
				company.setOper(users.getBuName());
			}
		}
		//修改订单状态
		int rows = service.updateState(company);
		//得到Json
		JsonMsg msg = new JsonMsg();
		if(rows>0) {
			//给Json赋值
			msg.setMsg("审核成功");
			msg.setDatas(0);
		}else {
			//给Json赋值
			msg.setMsg("审核失败");
			msg.setDatas(1);
		}
		//返回json到前台页面
		return msg;
	}
	/**
	 * 显示公司和关联的用户信息
	 * @param company 公司对象
	 * @author 刘武
	 * @return 公司集合
	 */
	@RequestMapping("/selectCompany")
	@ResponseBody
	public List<ListenCompany>  selectCompany(ListenCompany company){
		
		//显示公司和关联的用户信息
		List<ListenCompany> list = service.selectCompany(company);
		
		return list;
	}
	/**
	 * 修改公司和用户信息
	 * @param company 公司对象
	 * @author 刘武
	 * @param session 登录用户的信息
	 * @return 工具类
	 */
	@RequestMapping("updateCompanyOrUser")
	@ResponseBody
	public JsonMsg updateCompanyOrUser(ListenCompany company,HttpSession session) {
		//获取登录的用户信息
		ListenBackstageUser users=(ListenBackstageUser) session.getAttribute("user");
		//判断用户对象是否为空
		if(users!=null) {
			//判断用户名是否为空
			if(!Tools.isEmpty(users.getBuName())) {
				company.setOper(users.getBuName());
			}
		}
		//修改订单状态
		int rows = service.updateCompanyOrUser(company);
		//得到Json工具类
		JsonMsg msg = new JsonMsg();
		//判断是否修改成功
		if(rows>0) {
			//给Json赋值
			msg.setMsg("修改成功");
			msg.setDatas(1);
		}else {
			//给Json赋值
			msg.setMsg("修改失败");
			msg.setDatas(0);
		}
		//返回json到前台页面
		return msg;
	}
	/**
	 * 查看公司名是否存在
	 * @param companyName 公司名
	 * @author 刘武
	 * @return JsonMsg工具类
	 */
	@RequestMapping("findByCompanyName")
	@ResponseBody
	public JsonMsg findByCompanyName(String companyName) {
		
		//查询公司名是否存在
		ListenCompany company= service.findByCompanyName(companyName);
		//得到Json工具类
		JsonMsg msg = new JsonMsg();
		//判断查出来的公司对象是否为空
		if(company==null) {
			//给Json赋值
			msg.setMsg("可以注册");
			msg.setDatas(1);
		}else {
			//给Json赋值
			msg.setMsg("此公司名已存在");
			msg.setDatas(0);
		}
		//返回json到前台页面
		return msg;
	}
}

